package com.shop.cereshop.app.tencent.im.model.redpacket;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @description: 红包表实体
 * @author zdd
 * @date 2025/9/3 14:30
 * @version 1.0
 */
@Entity
@TableName("cere_red_packet")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RedPacket implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 红包ID */
    @Id
    @TableId(value = "packet_id", type = IdType.INPUT)
    private String packetId;

    /** 单号 */
    private String orderId;

    /** 发送者ID */
    private String senderId;

    /** 发送者名称 */
    private String senderName;

    /** 群组ID（单聊时为空字符串，避免NULL） */
    private String groupId;

    /** 接收者ID */
    private String receiverId;

    /** 接收者名称 */
    private String receiverName;

    /** 红包类型：1-普通红包 2-拼手气红包 3-专属红包 */
    private Integer packetType;

    /** 祝福语 */
    private String blessing;

    /** 红包封面 */
    private String cover;

    /** 红包总金额 (单位：元) */
    private BigDecimal totalAmount;

    /** 总个数 */
    private Integer totalCount;

    /** 剩余金额 (单位：元) */
    private BigDecimal remainAmount;

    /** 剩余个数 */
    private Integer remainCount;

    /** 支付方式 (1:微信 2:支付宝 3:钱包余额 4:银行卡 5:其他) */
    private Integer payMethod;

    /** 状态：0-创建未发送 1-未领取 2-未领完 3-已领完 4-已过期 5-已退款 */
    private Integer status;

    /** 关联的IM-单聊消息MsgId */
    private String msgId;

    /** 关联的IM-单聊消息MsgKey */
    private String msgKey;

    /** 关联的IM-群聊消息MsgSeq */
    private Long msgSeq;

    /** 创建时间（默认当前时间，无需手动传入） */
    private LocalDateTime createTime;

    /** 红包发送时间 */
    private LocalDateTime sendTime;

    /** 红包过期时间 */
    private LocalDateTime expireTime;

    public RedPacketVO covertToVO() {
        RedPacketVO vo = new RedPacketVO();
        vo.setPacketId(this.packetId);
        vo.setOrderId(this.orderId);
        vo.setSenderId(this.senderId);
        vo.setSenderName(this.senderName);
        vo.setGroupId(this.groupId);
        vo.setReceiverId(this.receiverId);
        vo.setReceiverName(this.receiverName);
        vo.setPacketType(this.packetType);
        vo.setBlessing(this.blessing);
        vo.setCover(this.cover);
        vo.setTotalAmount(this.totalAmount);
        vo.setTotalCount(this.totalCount);
        vo.setRemainAmount(this.remainAmount);
        vo.setRemainCount(this.remainCount);
        vo.setStatus(this.status);
        vo.setCreateTime(this.createTime);
        vo.setSendTime(this.sendTime);
        vo.setExpireTime(this.expireTime);
        return vo;
    }

}
